Normative retina sensitivity prediction

For PHS 7045

Yingjia Wei

The University of Utah

2024-12-12

Introduction

Hill-of-vision recap

  • Hill-of-vision: a graphical representation of retinal sensitivity, “peaks” represent areas of high sensitivity.

  • We would like to use this hill-of-vision map to calculate standard sensitivity loss

Difficulty: Age-adjusted normative data

Conservative method: spatial interpolation

  • Spatial interpolation estimates sensitivity for a single virtual patient’s testing results using Kriging.

  • However, this approach may lose some population-level information and is harder to interpret.

An interpretable age-adjusted prediction model would be much better!

Interpolation function

  • Works with multiple exam types (e.g., Mesopic, Cyan, Red, and Cyan-Red difference).

  • Provides predicted sensitivity values and visualizations with parallel computing.

  • Kriging uses the best linear unbiased prediction based on both the spatial structure and the measurements, so it’s not guaranteed to be the best prediction, especially in areas with sparse test points.

##----Interpolation----
data("ref77")
#head(ref77)

interpolated_77 <- Interpolation(dt = ref77, ncpus=NULL, cl=NULL)
## hill-of-vision from interpolation 
VisualRetina(pred_sens = interpolated_77[[2]], exam = unique(interpolated_77[[2]]$Examtype)) # plot mesopic results for comparison

Extension

Modelling age-adjusted normative data

  • Objective: Predict retinal sensitivity based on patient-specific characteristics like age and test location.

  • Models Used: Linear Mixed Model (LMM), Bayesian Quantile Regression (BQR) and Random Forest (RF).

  • Performance comparison: mean absolute error (MAE) and mean absolute calibration error (MACE).

Workflow

  • Step 1: Data preparation: SensForFit()
  • Step 2: Model performance comparison: PredictCompare()
    • also specific functions: PredictNormal_lmm(), PredictNormal_bqr(), PredictNormal_rf()
  • Step 3: Prediction based on optimal model: PredictSensitivity()
  • Step 4: Visualization: VisualRetina()
data("refMes")
## data preparation
refMes <- SensForFit(dt = refMes, examcol = "Examtype", idcol = "Patient", agecol = "Age", senscol = "MeanSens", k = 10)
## model comparison
(res.tab <- PredictCompare(dt = refMes, exam = "Mesopic", CalibSplit = 0.2, coverage = 0.95))
## prediction for a future patient aged 77 (e.g. bqr is the best)
pred_BQR_77 <- PredictSensitivity(model = "BQR", age = 77, dt = refMes)
## hill-of-vision for new patient
VisualRetina(pred_sens = pred_BQR_77, exam = "Mesopic")
Model MAE MACE
lmm_results LMM 1.43 0.03
bqr_results BQR 1.70 0.02
rf_results RF 1.53 0.03

Discussion

Other Models vs. Interpolation

  • Models provide insights into age and test-location effects on sensitivity.

  • No need to predict complete hill-of-vision.

  • Models can account for variability across patients and test sites.

  • Further exploration is needed to develop a robust conformal prediction framework, especially for machine learning methods.

Thanks!